package xyz.xtt.pay.service;

import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import xyz.xtt.asset.api.enums.RocketMessageDelayLevelEnum;
import xyz.xtt.pay.api.enums.PayOrderBusinessTypeEnum;
import xyz.xtt.pay.api.enums.PayOrderStatusEnum;

/**
 * @author huqibo 发送延时消息
 */
public interface IRocketMqService {
	void sendOrderRefundMsg(@Positive long orderId, @NotNull String buyerUserId);

	/**
	 * 发送延时消息
	 * 
	 * @param topic
	 * @param tag
	 * @param message
	 * @param delayLevel
	 */
	void sendDelayedMessage(String topic, String tag, String message, RocketMessageDelayLevelEnum delayLevel);

	/**
	 * 发送支付订单状态变更消息
	 *
	 * @param payOrderId 支付订单id
	 */
	void sendPayOrderStatusChangeMsg(long payOrderId);

	/**
	 * 发送业务订单支付状态变更消息
	 *
	 * @param businessOrderId  业务订单id
	 * @param businessTypeEnum
	 * @param payStatus
	 */
	void sendBusinessOrderStatusChangeMsg(Long businessOrderId, PayOrderBusinessTypeEnum businessTypeEnum, PayOrderStatusEnum payStatus);
}
